// 引入express框架
const express = require('express')
// 引入数据库处理模块
const mongoose = require('mongoose')
// 引入路径处理模块
const path = require('path')
// 引入session模块
var session = require('express-session')
// 处理文件上传
const formidableMiddleware = require('express-formidable')
// web服务器
const app = express()
// 开放静态资源
app.use(express.static(path.join(__dirname, 'public')))
// session配置
app.use(
  session({
    secret: 'keyboard cat',
    resave: false,
    saveUninitialized: false
  })
)
// 处理post参数
app.use(
  formidableMiddleware({
    // 文件上传目录
    uploadDir: path.join(__dirname, 'public', 'uploads'),
    // 最大上传文件为2M
    maxFileSize: 2 * 1024 * 1024,
    // 保留文件扩展名
    keepExtensions: true
  })
)

// 数据库连接
mongoose
  .connect('mongodb://fe24:fe24@localhost:27017/alibaixiu', {
    useNewUrlParser: true,
    useCreateIndex: true
  })
  .then(() => console.log('数据库连接成功'))
  .catch(() => console.log('数据库连接失败'))

// // 自动生成评论数据（每个用户  对  每篇文章   评论一次）
// // 注意：自动生成前，你先确保数据中有用户和文章
// ;(async () => {
//   const { User } = require('./model/User')
//   const users = await User.find() // 找出所有用户
//   console.log(users)

//   const { Post } = require('./model/Post')
//   const posts = await Post.find({ state: 1 }) // 找出所有已激活的文章
//   console.log(posts)

//   const { Comment } = require('./model/Comment')

//   // 循环用户
//   users.forEach(user => {
//     // 循环文章，每个用户对应每一篇文章，创建一条评论
//     posts.forEach(async post => {
//       await Comment.create({
//         author: user._id,
//         content: `用户 (${user.nickName}) 在 (${post.title}) 发布了一条评论`,
//         post: post._id
//       })
//     })
//   })
//   console.log('随机评论生成成功');
// })()

// 路由
require('./routes')(app)
// 返回系统监听
app.listen(3000, () => console.log('服务器启动成功'))
